server {

    ...

    # 匹配所有路径,但它的优先级没那么高。

    location / {
        uwsgi_pass 127.0.0.1:9015;
        include uwsgi_params;
        client_max_body_size 100m;
    }

    # 匹配用户上传文件,此路径为发布后产生数据,与程序分离。

    location ^~ /upfiles/ {
        root /var/www/wiki/upfiles;
    }

    # 匹配“程序中(开发时)”静态图片等资源的访问,如果设置了专门的静态资源目录则不必这样,直接路径匹配就行了。

    location ~* \.(gif|jpg|jpeg|css|js|html|png|icon|ico) {
        root /var/www/wiki/static;
    }

    # 匹配指定的路径

    location = /MP_verify_jHKS6G8vxpo1QPfs.txt {
        default_type text/html;
        return 200 "jHKS6G8vxpo1QPfs";
    }
    ...
}

location的语法

语法:[=|~|~*|^~|@] /uri/ { ... }

第一部分,匹配命令有如下几个,也可以没有这部分:

= 精确匹配 ~ 使用正则表达式匹配,区分大小写 ~* 使用正则表达是匹配,不区分大小写 ^~ 普通字符匹配,如果这个匹配,将停止后面的匹配 @

第二部分,是uri

location优先级

  • (1) = 如果有这个匹配,则立即停止搜索。
  • (2) 常规匹配中将按照最长匹配的规则,它是一个临时值会继续向下匹配;如果规则中使用^〜前缀并且被匹配,搜索停止;如果常规匹配刚好完全“等于”规则路径,则终止后续匹配。
  • (3) 正则表达式,按照在配置文件中定义的顺序匹配。
  • (4) 如果在寻找普通匹配的最大匹配过程中,遇到了有正则表达式匹配到了就以正则表达式为准,停止普通匹配的搜索。如没有遇到匹配的正则表达式,则使用匹配到的最大的普通匹配(也就是规则2的匹配结果)。

附加解释:正则匹配会覆盖常规匹配,但是常规匹配中有特例会终止匹配过程“^~”和“完全匹配”。

[ 编辑 | 历史 ]
最近由“jilili”在“2016-12-14 16:31:46”修改